From d7d3a82c28a1102ee6c9707071a946164bae0d57 Mon Sep 17 00:00:00 2001 From: Jan Beulich Date: Fri, 16 Dec 2016 14:37:11 +0100 Subject: [PATCH] x86emul: CMPXCHG16B requires an aligned operand This distinguishes it from CMPXCHG8B. Signed-off-by: Jan Beulich Reviewed-by: Andrew Cooper --- xen/arch/x86/x86_emulate/x86_emulate.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/xen/arch/x86/x86_emulate/x86_emulate.c b/xen/arch/x86/x86_emulate/x86_emulate.c index 921933c11c..6313b57bf8 100644 --- a/xen/arch/x86/x86_emulate/x86_emulate.c +++ b/xen/arch/x86/x86_emulate/x86_emulate.c @@ -5413,6 +5413,9 @@ x86_emulate( if ( rex_prefix & REX_W ) { host_and_vcpu_must_have(cx16); + generate_exception_if(!is_aligned(ea.mem.seg, ea.mem.off, 16, + ctxt, ops), + EXC_GP, 0); op_bytes = 16; } else -- 2.30.2